/*
 * @lc app=leetcode.cn id=213 lang=golang
 *
 * [213] 打家劫舍 II
 */

// @lc code=start
// 对于环的问题，可以分情况，这种第一家只有被偷和不被偷两种状态
func rob(nums []int) int {
	// 分为偷一号店和不偷一号店
	n := len(nums)
	res := make([]int,n+1)
	m := res[1]
	// 不偷1号
	for i:=2;i<=n;i++{
		if i == 2{
			res[i] = res[i-2]+nums[i-1]
		}else{
			res[i] = max(res[i-2],res[i-3])+nums[i-1]
		}
		m = max(m,res[i])
	}
	// m = res[n]
	res = make([]int,n+1)
	res[1] = nums[0]
	m = max(m,res[1])
	// 偷一号
	for i:=1;i<n;i++{
		if i<=2{
			res[i] = nums[i-1]
		}else{
			res[i] = max(res[i-2],res[i-3])+nums[i-1]
		}
		m = max(m,res[i])
	}
	return m
	
}

func max(i,j int)int{
	if i>j{
		return i 
	}
	return j
}
// @lc code=end

